home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs07.d81
/
tokeniz.prg
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2009-10-10
|
4KB
|
155 lines
1 A$="":FORI=1TO255:A$=A$+"*":NEXT
2 DATA 160,2,177,45,153,137,0,200,192
3 DATA 6,208,246,162,1,32,198,255
4 DATA 32,228,255,201,13,240,15,164
5 DATA 142,145,140,200,132,142,196,139,240,4,165,144,240,234,76,204,255
6 FORI=896TO937:READJ:POKEI,J:NEXT
11 GOSUB460
15 INPUT"INPUT FILE";I$
25 OPEN15,8,15,"I":OPEN1,8,2,"0:"+I$+",S,R"
30 INPUT#15,E,E$:IFETHENPRINTE$:RUN
35 INPUT"OUTPUT FILE";O$
45 OPEN2,8,9,"0:"+O$+",P,W"
50 INPUT#15,E,E$:IFETHENPRINTE$:CLOSE2:GOTO35
55 PRINT#2,CHR$(1)CHR$(8);
60 TI$="000000":SYS896:SS=ST
61 L=PEEK(142):L$=LEFT$(A$,L):PRINTL$
65 IFVAL(L$)ORLEFT$(L$,1)="0"THEN80
70 IFL<2THEN150
75 L$=MID$(L$,2):L=L-1:GOTO65
80 FORJ=2TOL:A=ASC(MID$(L$,J)):IFA>47THENIFA<58THENNEXT
85 N=VAL(LEFT$(L$,J-1)):L$=MID$(L$,J+1):L=LEN(L$):IFL=0THEN150
90 H%=N/256:L%=255ANDN
95 PRINT#2,"22";CHR$(L%)CHR$(H%);:Q=0:O$=""
100 FORP=1TOL:S=ASC(MID$(L$,P))
105 IFS=34THENQ=NOTQ
110 IFS=58THENIFQ=131THENQ=0
115 IFQTHEN140
125 GOSUB160:IFS=143ORS=131THENQ=S
140 O$=O$+CHR$(S)
145 NEXT:PRINT#2,O$;CHR$(0);:PRINTTI
150 IFSS=0THEN60
155 PRINT#2,CHR$(0)CHR$(0);:CLOSE1:CLOSE2:CLOSE15:END
160 FORC=1TO26
170 IFT(C)<>S THENNEXT:RETURN
175 ONCGOTO200,201,202,203,204,205,206,207
176 C=C-8
180 ONCGOTO210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360,370,380
190 PRINT"CRASHED":GOTO155
200 S=170:RETURN
201 S=171:RETURN
202 S=172:RETURN
203 S=173:RETURN
204 S=174:RETURN
205 S=177:RETURN
206 S=178:RETURN
207 S=179:RETURN
210 T1$=MID$(L$,P,3)
211 IFT1$="AND"THENS=175:P=P+2:RETURN
212 IFT1$="ABS"THENS=182:P=P+2:RETURN
213 IFT1$="ATN"THENS=193:P=P+2:RETURN
214 IFT1$="ASC"THENS=198:P=P+2
215 RETURN
220 T1$=MID$(L$,P,5)
221 IFT1$="CLOSE"THENS=160:P=P+4:RETURN
222 T1$=LEFT$(T1$,4)
223 IFT1$="CONT"THENS=154:P=P+3:RETURN
224 IFT1$="CHR$"THENS=199:P=P+3:RETURN
225 T1$=LEFT$(T1$,3)
226 IFT1$="CLR"THENS=156:P=P+2:RETURN
227 IFT1$="CMD"THENS=157:P=P+2:RETURN
228 IFT1$="COS"THENS=190:P=P+2
229 RETURN
230 T1$=MID$(L$,P,4)
231 IFT1$="DATA"THENS=131:P=P+3:RETURN
232 T1$=LEFT$(T1$,3)
233 IFT1$="DIM"THENS=134:P=P+2:RETURN
234 IFT1$="DEF"THENS=150:P=P+2
235 RETURN
240 T1$=MID$(L$,P,3)
241 IFT1$="END"THENS=128:P=P+2:RETURN
242 IFT1$="EXP"THENS=189:P=P+2
243 RETURN
250 T1$=MID$(L$,P,3)
251 IFT1$="FOR"THENS=129:P=P+2:RETURN
252 IFT1$="FRE"THENS=184:P=P+2:RETURN
253 IFLEFT$(T1$,2)="FN"THENS=165:P=P+1
254 RETURN
260 IFMID$(L$,P,5)="GOSUB"THENS=141:P=P+4:RETURN
261 IFMID$(L$,P,4)="GOTO"THENS=137:P=P+3:RETURN
262 IFMID$(L$,P,3)="GET"THENS=161:P=P+2:RETURN
263 IFMID$(L$,P,2)="GO"THENS=203:P=P+1
264 RETURN
270 IFMID$(L$,P,6)="INPUT#"THENS=132:P=P+5:RETURN
271 IFMID$(L$,P,5)="INPUT"THENS=133:P=P+4:RETURN
272 IFMID$(L$,P,3)="INT"THENS=181:P=P+2:RETURN
273 IFMID$(L$,P,2)="IF"THENS=139:P=P+1
274 RETURN
280 T1$=MID$(L$,P,5)
281 IFT1$="LEFT$"THENS=200:P=P+4:RETURN
282 T1$=LEFT$(T1$,4)
283 IFT1$="LOAD"THENS=147:P=P+3:RETURN
284 IFT1$="LIST"THENS=155:P=P+3:RETURN
285 T1$=LEFT$(T1$,3)
286 IFT1$="LET"THENS=136:P=P+2:RETURN
287 IFT1$="LOG"THENS=188:P=P+2:RETURN
288 IFT1$="LEN"THENS=195:P=P+2
289 RETURN
290 IFMID$(L$,P,4)="MID$"THENS=202:P=P+3
291 RETURN
300 IFMID$(L$,P,4)="NEXT"THENS=130:P=P+3:RETURN
301 T1$=MID$(L$,P,3)
302 IFT1$="NEW"THENS=162:P=P+2:RETURN
303 IFT1$="NOT"THENS=168:P=P+2
304 RETURN
310 IFMID$(L$,P,4)="OPEN"THENS=159:P=P+3:RETURN
311 T1$=MID$(L$,P,2)
312 IFT1$="ON"THENS=145:P=P+1:RETURN
313 IFT1$="OR"THENS=176:P=P+1
314 RETURN
320 IFMID$(L$,P,6)="PRINT#"THENS=152:P=P+5:RETURN
321 IFMID$(L$,P,5)="PRINT"THENS=153:P=P+4:RETURN
322 T1$=MID$(L$,P,4)
323 IFT1$="POKE"THENS=151:P=P+3:RETURN
324 IFT1$="PEEK"THENS=194:P=P+3:RETURN
325 IFLEFT$(T1$,3)="POS"THENS=185:P=P+2
326 RETURN
330 IFMID$(L$,P,7)="RESTORE"THENS=140:P=P+6:RETURN
331 T1$=MID$(L$,P,6)
332 IFT1$="RETURN"THENS=142:P=P+5:RETURN
333 IFT1$="RIGHT$"THENS=201:P=P+5:RETURN
334 IFLEFT$(T1$,4)="READ"THENS=135:P=P+3:RETURN
335 T1$=LEFT$(T1$,3)
336 IFT1$="RUN"THENS=138:P=P+2:RETURN
337 IFT1$="REM"THENS=143:P=P+2:RETURN
338 IFT1$="RND"THENS=187:P=P+2
339 RETURN
340 T1$=MID$(L$,P,4):IFT1$="STOP"THENS=144:P=P+3:RETURN
341 IFT1$="SAVE"THENS=148:P=P+3:RETURN
342 IFT1$="SPC("THENS=166:P=P+3:RETURN
343 IFT1$="STEP"THENS=169:P=P+3:RETURN
344 IFT1$="STR$"THENS=196:P=P+3:RETURN
345 T1$=LEFT$(T1$,3):IFT1$="SYS"THENS=158:P=P+2:RETURN
346 IFT1$="SGN"THENS=180:P=P+2:RETURN
347 IFT1$="SQR"THENS=186:P=P+2:RETURN
348 IFT1$="SIN"THENS=191:P=P+2
349 RETURN
350 T1$=MID$(L$,P,4)
351 IFT1$="TAB("THENS=163:P=P+3:RETURN
352 IFT1$="THEN"THENS=167:P=P+3:RETURN
353 IFLEFT$(T1$,3)="TAN"THENS=192:P=P+2:RETURN
354 IFLEFT$(T1$,2)="TO"THENS=164:P=P+1
355 RETURN
360 IFMID$(L$,P,3)="USR"THENS=183:P=P+2
361 RETURN
370 IFMID$(L$,P,6)="VERIFY"THENS=149:P=P+5:RETURN
371 IFMID$(L$,P,3)="VAL"THENS=197:P=P+2
372 RETURN
380 IFMID$(L$,P,4)="WAIT"THENS=146:P=P+3
381 RETURN
460 DATA43,45,42,47,94,62
470 DATA61,60,65,67,68,69
480 DATA70,71,73,76,77,78
490 DATA79,80,82,83,84,85,86,87
510 DIMT(26):FORI=1TO26:READT(I):NEXT:RETURN